/**
 * Created by fangcailiang on 16/6/14.
 */

/*
   有一天小猴子摘下了若干个桃子，当即吃掉一半，还觉得不过瘾，又多吃了一个。
   第二天接着吃了剩下的桃子中的一半，仍不过瘾，又多吃了一个。
   以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时，看到只剩下一个桃子了。
   问小猴子第一天共摘下了多少个桃子 ?
 */

function monkeyEatFruit1(n){
    if(n == 100){
        return 1;
    }
    return (2 * monkeyEatFruit1(n+1) + 2);
}
console.log(monkeyEatFruit1(1));




// 使用递归算法要注意 栈溢出的情况 递归的次数超过 10000 就要注意了
function monkeyEatFruit2(n){
    console.log("函数 f(" + n + ") 入栈");
    if(n == 1){
        console.log("函数 f(" + n + ") 出栈");
        return 1;
    }else{
        let r = (2 * monkeyEatFruit2(n-1) + 2);
        console.log("函数 f(" + n + ") 出栈");
        return r;
    }
}
console.log(monkeyEatFruit2(1000));